﻿/**
 * jQuery EasyUI 1.3.5
 *
 * Copyright (c) 2009-2013 www.jeasyui.com. All rights reserved.
 *
 * Licensed under the GPL or commercial licenses
 * To use it on other terms please contact us: info@jeasyui.com
 * http://www.gnu.org/licenses/gpl.txt
 * http://www.jeasyui.com/license_commercial.php
 *
 */
(function ($) {
    var _1;

    function _2(_3) {
        var _4 = $.data(_3, "propertygrid");
        var _5 = $.data(_3, "propertygrid").options;
        $(_3).datagrid($.extend({}, _5, {
            cls: "propertygrid", view: (_5.showGroup ? _5.groupView : _5.view), onClickRow: function (_6, _7) {
                if (_1 != this) {
                    _a(_1);
                    _1 = this;
                }
                if (_5.editIndex != _6 && _7.editor) {
                    var _8 = $(this).datagrid("getColumnOption", "value");
                    _8.editor = _7.editor;
                    _a(_1);
                    $(this).datagrid("beginEdit", _6);
                    $(this).datagrid("getEditors", _6)[0].target.focus();
                    _5.editIndex = _6;
                }
                _5.onClickRow.call(_3, _6, _7);
            }, loadFilter: function (_9) {
                _a(this);
                return _5.loadFilter.call(this, _9);
            }
        }));
        $(document).unbind(".propertygrid").bind("mousedown.propertygrid", function (e) {
            var p = $(e.target).closest("div.datagrid-view,div.combo-panel");
            if (p.length) {
                return;
            }
            _a(_1);
            _1 = undefined;
        });
    };

    function _a(_b) {
        var t = $(_b);
        if (!t.length) {
            return;
        }
        var _c = $.data(_b, "propertygrid").options;
        var _d = _c.editIndex;
        if (_d == undefined) {
            return;
        }
        var ed = t.datagrid("getEditors", _d)[0];
        if (ed) {
            ed.target.blur();
            if (t.datagrid("validateRow", _d)) {
                t.datagrid("endEdit", _d);
            } else {
                t.datagrid("cancelEdit", _d);
            }
        }
        _c.editIndex = undefined;
    };
    $.fn.propertygrid = function (_e, _f) {
        if (typeof _e == "string") {
            var _10 = $.fn.propertygrid.methods[_e];
            if (_10) {
                return _10(this, _f);
            } else {
                return this.datagrid(_e, _f);
            }
        }
        _e = _e || {};
        return this.each(function () {
            var _11 = $.data(this, "propertygrid");
            if (_11) {
                $.extend(_11.options, _e);
            } else {
                var _12 = $.extend({}, $.fn.propertygrid.defaults, $.fn.propertygrid.parseOptions(this), _e);
                _12.frozenColumns = $.extend(true, [], _12.frozenColumns);
                _12.columns = $.extend(true, [], _12.columns);
                $.data(this, "propertygrid", {options: _12});
            }
            _2(this);
        });
    };
    $.fn.propertygrid.methods = {
        options: function (jq) {
            return $.data(jq[0], "propertygrid").options;
        }
    };
    $.fn.propertygrid.parseOptions = function (_13) {
        return $.extend({}, $.fn.datagrid.parseOptions(_13), $.parser.parseOptions(_13, [{showGroup: "boolean"}]));
    };
    var _14 = $.extend({}, $.fn.datagrid.defaults.view, {
        render: function (_15, _16, _17) {
            var _18 = [];
            var _19 = this.groups;
            for (var i = 0; i < _19.length; i++) {
                _18.push(this.renderGroup.call(this, _15, i, _19[i], _17));
            }
            $(_16).html(_18.join(""));
        }, renderGroup: function (_1a, _1b, _1c, _1d) {
            var _1e = $.data(_1a, "datagrid");
            var _1f = _1e.options;
            var _20 = $(_1a).datagrid("getColumnFields", _1d);
            var _21 = [];
            _21.push("<div class=\"datagrid-group\" group-index=" + _1b + ">");
            _21.push("<table cellspacing=\"0\" cellpadding=\"0\" border=\"0\" style=\"height:100%\"><tbody>");
            _21.push("<tr>");
            if ((_1d && (_1f.rownumbers || _1f.frozenColumns.length)) || (!_1d && !(_1f.rownumbers || _1f.frozenColumns.length))) {
                _21.push("<td style=\"border:0;text-align:center;width:25px\"><span class=\"datagrid-row-expander datagrid-row-collapse\" style=\"display:inline-block;width:16px;height:16px;cursor:pointer\">&nbsp;</span></td>");
            }
            _21.push("<td style=\"border:0;\">");
            if (!_1d) {
                _21.push("<span class=\"datagrid-group-title\">");
                _21.push(_1f.groupFormatter.call(_1a, _1c.value, _1c.rows));
                _21.push("</span>");
            }
            _21.push("</td>");
            _21.push("</tr>");
            _21.push("</tbody></table>");
            _21.push("</div>");
            _21.push("<table class=\"datagrid-btable\" cellspacing=\"0\" cellpadding=\"0\" border=\"0\"><tbody>");
            var _22 = _1c.startIndex;
            for (var j = 0; j < _1c.rows.length; j++) {
                var css = _1f.rowStyler ? _1f.rowStyler.call(_1a, _22, _1c.rows[j]) : "";
                var _23 = "";
                var _24 = "";
                if (typeof css == "string") {
                    _24 = css;
                } else {
                    if (css) {
                        _23 = css["class"] || "";
                        _24 = css["style"] || "";
                    }
                }
                var cls = "class=\"datagrid-row " + (_22 % 2 && _1f.striped ? "datagrid-row-alt " : " ") + _23 + "\"";
                var _25 = _24 ? "style=\"" + _24 + "\"" : "";
                var _26 = _1e.rowIdPrefix + "-" + (_1d ? 1 : 2) + "-" + _22;
                _21.push("<tr id=\"" + _26 + "\" datagrid-row-index=\"" + _22 + "\" " + cls + " " + _25 + ">");
                _21.push(this.renderRow.call(this, _1a, _20, _1d, _22, _1c.rows[j]));
                _21.push("</tr>");
                _22++;
            }
            _21.push("</tbody></table>");
            return _21.join("");
        }, bindEvents: function (_27) {
            var _28 = $.data(_27, "datagrid");
            var dc = _28.dc;
            var _29 = dc.body1.add(dc.body2);
            var _2a = ($.data(_29[0], "events") || $._data(_29[0], "events")).click[0].handler;
            _29.unbind("click").bind("click", function (e) {
                var tt = $(e.target);
                var _2b = tt.closest("span.datagrid-row-expander");
                if (_2b.length) {
                    var _2c = _2b.closest("div.datagrid-group").attr("group-index");
                    if (_2b.hasClass("datagrid-row-collapse")) {
                        $(_27).datagrid("collapseGroup", _2c);
                    } else {
                        $(_27).datagrid("expandGroup", _2c);
                    }
                } else {
                    _2a(e);
                }
                e.stopPropagation();
            });
        }, onBeforeRender: function (_2d, _2e) {
            var _2f = $.data(_2d, "datagrid");
            var _30 = _2f.options;
            _31();
            var _32 = [];
            for (var i = 0; i < _2e.length; i++) {
                var row = _2e[i];
                var _33 = _34(row[_30.groupField]);
                if (!_33) {
                    _33 = {value: row[_30.groupField], rows: [row]};
                    _32.push(_33);
                } else {
                    _33.rows.push(row);
                }
            }
            var _35 = 0;
            var _36 = [];
            for (var i = 0; i < _32.length; i++) {
                var _33 = _32[i];
                _33.startIndex = _35;
                _35 += _33.rows.length;
                _36 = _36.concat(_33.rows);
            }
            _2f.data.rows = _36;
            this.groups = _32;
            var _37 = this;
            setTimeout(function () {
                _37.bindEvents(_2d);
            }, 0);

            function _34(_38) {
                for (var i = 0; i < _32.length; i++) {
                    var _39 = _32[i];
                    if (_39.value == _38) {
                        return _39;
                    }
                }
                return null;
            };

            function _31() {
                if (!$("#datagrid-group-style").length) {
                    $("head").append("<style id=\"datagrid-group-style\">" + ".datagrid-group{height:25px;overflow:hidden;font-weight:bold;border-bottom:1px solid #ccc;}" + "</style>");
                }
            };
        }
    });
    $.extend($.fn.datagrid.methods, {
        expandGroup: function (jq, _3a) {
            return jq.each(function () {
                var _3b = $.data(this, "datagrid").dc.view;
                var _3c = _3b.find(_3a != undefined ? "div.datagrid-group[group-index=\"" + _3a + "\"]" : "div.datagrid-group");
                var _3d = _3c.find("span.datagrid-row-expander");
                if (_3d.hasClass("datagrid-row-expand")) {
                    _3d.removeClass("datagrid-row-expand").addClass("datagrid-row-collapse");
                    _3c.next("table").show();
                }
                $(this).datagrid("fixRowHeight");
            });
        }, collapseGroup: function (jq, _3e) {
            return jq.each(function () {
                var _3f = $.data(this, "datagrid").dc.view;
                var _40 = _3f.find(_3e != undefined ? "div.datagrid-group[group-index=\"" + _3e + "\"]" : "div.datagrid-group");
                var _41 = _40.find("span.datagrid-row-expander");
                if (_41.hasClass("datagrid-row-collapse")) {
                    _41.removeClass("datagrid-row-collapse").addClass("datagrid-row-expand");
                    _40.next("table").hide();
                }
                $(this).datagrid("fixRowHeight");
            });
        }
    });
    $.fn.propertygrid.defaults = $.extend({}, $.fn.datagrid.defaults, {
        singleSelect: true,
        remoteSort: false,
        fitColumns: true,
        loadMsg: "",
        frozenColumns: [[{field: "f", width: 16, resizable: false}]],
        columns: [[{field: "name", title: "Name", width: 100, sortable: true}, {
            field: "value",
            title: "Value",
            width: 100,
            resizable: false
        }]],
        showGroup: false,
        groupView: _14,
        groupField: "group",
        groupFormatter: function (_42, _43) {
            return _42;
        }
    });
})(jQuery);

